spark 자체 모듈 배포
2024/02/24
자체 모듈을 만들어 spark 클러스터에서 돌리려면 몇 가지 까다로운 설정이 있다. 특히 클러스터 설정은 인프라 팀에서 강제하는 것들이 많다.
- 빌드는
setup.py bdist_egg
로 시행한다.
- 빌드 결과 .egg 를 배포한다.
- deploy-mode = cluster 인 경우 신경 쓸 것들이 더 있다. client로 테스트하며 로그를 보자.
- yarn logs 로 실패 로그를 보자
- --files 에는 egg를 쓰지 않는다.
- --py-files 를 --files 에 이어서 쓰고 egg만 쓴다.
- os.path 에 py용 캐시 디렉토리를 지정하는 것은 도움이 되지 않는다.
- --py-files 에 이어서 다음을 쓴다.
--conf "spark.executorEnv.PTYTHON_EGG_CACHE=/tmp/.python-eggs" \
--conf "spark.driverEnv.PYTHON_EGG_CACHE=/tmp/.python-eggs"
클러스터에서 돌리기 위한 여러 문제들이 있었다.
- 파이썬 네이티브 변수들은 알아서 broadcast가 된다. 즉, 클러스터에 잘 복사되어 활용된다.
- C로 만들어 파이썬으로 래핑한 모듈은 어렵다. 클러스터의 spark 코드 진입 시 1회 실행하는 방법으로 클러스터에서 객체 생성하라.
- 따라서 클러스터에 모듈 배포가 필요하다. 드라이버 초기 코드에서 객체를 생성해서 브로드캐스트 할 수 없다.
[t:/] is not "technology - root". dawnsea, rss